"""
列表：list
    1.概念：用于存储一组数据。使用[]。类似于其他语言的数组

    2.使用：
        语法声明：[元素1,元素2,元素3....]
        可以通过下标索引来获取指定的元素：index，从0开始到长度减1
            下标：也可以为负：-1代表最后一个，-2代表倒数第二个，依此类推。。
    3.特点：
        A：列表中存储的元素是有顺序，且数据可以重复
        B：一个列表 中可以存储多个任意类型的元素，但实际上一般只存储一种类型的数据
"""

# 数据结构  list tuple set dict
#           列表  元组 集合 字典

# 可以理解为容器

list1 = []
print(type(list1))  # <class 'list'>

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list1)

print(list1[0])
print(list1[2])
print(list1[-1])

list1[3] = 100
print(list1)

"""
列表的其他操作：
    1.切片slice
        切换是返回新的列表，新列表中的元素，从原来的列表中切割来的
        [:]-->复制一个列表
        copy()-->复制一个列表

        对比于：nums4 = nums
            将nums的列表的地址，赋值给nums4，结果是nums和nums4，指向同一个列表

    2.其他的方法
        sort(),默认从小到大
        sort(reverse=True),从大到小
        reverse(),反转
        index(),
            也支持：in和not in
        clear()
        count()
"""
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# print(list1[2:5])  # [)
# print(list1[2:8])
# print(list1[2:8:2])
#
# list2 = list1.copy()
# print(list2)
#
# list1[0] = 20
# print(list1)
# print(list2)

list3 = list1
print(list1)
print(list3)
list1[0] = 101
print(list1)
print(list3)

print(id(list1))
print(id(list3))

list3[2] = 55
print(list3)
print(list1)

list2 = list1.copy()
print(list2)
print(id(list2))
list1[6] = 1111
print(list1)
print(list2)

'''
    2.其他的方法
        sort(),默认从小到大
        sort(reverse=True),从大到小
        reverse(),反转
        index(),
            也支持：in和not in
        clear()
        count()
'''
list1 = [1, 2, 3, 4, 100, 6, 7, 8, 9,4,4]

# print(list1.sort()) # 排序,默认升序
# print(list1)
# list1.sort(reverse=True)  # 降序排列
# print(list1)

print(list1.index(4))  # 查看一个元素在列表中 所在的下标
# print(list1.index(10))#ValueError

print(4 in list1)
print(5 not in list1)

# 查看指定元素在list中出现的数量
print(list1.count(4))

# 清空列表
list1.clear()

print(list1)
